package cn.larry.common.utils.tree;

import java.io.File;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * This is created,
 * but not necessarily updated by me.
 * Therefore, AUTHOR is useless.
 * 2024/11/15 10:33
 *
 * @Version 1.0
 */
public class TreeNodeJavaCodeUtils {
    public static void main(String[] args) {
        File f = new File("/Users/laodi/IdeaProjects/java-base-sys-frame/base-java-code");// 指定文件位置
        System.out.println(f.getName());// 打印在这个文件夹;
        tree(f, 1);// 方法!进入子文件夹中 并打印子文件名
    }

    /**
     * 指定文件位置
     *
     * @param filePath
     */
    public static void treeNode(String filePath) {
        File f = new File(filePath);
        System.out.println(f.getName());// 打印在这个文件夹;
        tree(f, 1);// 方法!进入子文件夹中 并打印子文件名
    }

    private static void tree(File f, int level) {
        File[] childs = f.listFiles();// 返回一个抽象路径名数组，这些路径名表示此抽象路径名所表示目录中地文件
        for (int i = 0; i < childs.length; i++) {
            // 打印前缀
            for (int j = 0; j < level; j++) {
                if (j == 0) {
                    System.out.print("|＿");
                } else {
                    System.out.print("＿");
                }
            }

            if (childs[i].isDirectory()) { //
                System.out.println(childs[i].getName());// 打印子文件地名字
                tree(childs[i], level + 1);
            } else {
                System.out.println(childs[i].getName());
//                System.out.println(childs[i].getName() + "\t\t\t\t\t"+ childs[i].length()/1024/1024/1024 +"B" );// 如果是文件把大小也打印出来
            }

        }

    }
}
